package collection.list;

import org.junit.Test;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class a1_ArrayList {

	/**
	 * 构造函数
	 */
	public void test0() {
		//无参构造，将 elementData 初始化成一个空的object数组
		new ArrayList<>();

		//给list初始化一个长度，在已知list长度的时候，使用该方法，可以减少ArrayList中元素的copy
		new ArrayList<>(10);
	}

	/**
	 * Arrays.asList
	 */
	public void test1() {
		//通过Arrays.asList方式创建ArrayList
		List<String> list = new ArrayList<String>(Arrays.asList("aaa", "bbb", "ccc"));

		//此种方式不能赋值给ArrayList，因为 Arrays.asList 就不是一个List，它是实现了Collection的Arrays的一个私有类
		List<String> list1 = Arrays.asList("aaa", "bbb", "ccc");

		//ArrayList<String> list2 = Arrays.asList("aaa", "bbb", "ccc"); 报错
	}

	/**
	 * 插入与扩容
	 */
	@Test
	public void test2() {
		ArrayList<Integer> integers = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9,
				10));
		// int newCapacity = oldCapacity + (oldCapacity >> 1); ArrayList的新长度规则
		integers.add(11);
	}


}
